unit uDodajLokal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uBaseFormLogo, uADStanIntf, uADStanOption, uADStanError, uADGUIxIntf, uADPhysIntf, uADStanDef, uADStanPool, uADPhysManager, uADCompClient,
  DB, AppEvnts, Menus, JvMenus, JvComponentBase, JvBalloonHint, ImgList, JvImageList, ActnList, JvVersionControlActions, pngimage, ExtCtrls,
  JvExExtCtrls, JvImage, JvExControls, JvButton, JvTransparentButton, JvExtComponent, JvPanel, JvBevel, JvGradientHeaderPanel, JvLabel, Buttons,
  StdCtrls, JvExStdCtrls, JvEdit;

type
  TfDodajLokal = class(TfBaseFormLogo)
    JvLabNrDomu: TJvLabel;
    JvLabNrLokalu: TJvLabel;
    JvEdtNrDomu: TJvEdit;
    JvEdtNrLokalu: TJvEdit;
    SpeedButton1: TSpeedButton;
    actDodaj: TAction;
    procedure JvPanelRightMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure jvPanelButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure FormShow(Sender: TObject);
    procedure actDodajExecute(Sender: TObject);
  private
    { Private declarations }
    FQuery : TADQuery;
    FIdNrUlicy : integer;
    FIdMiejscowoscWGminie : integer;
    FCzyUlica : boolean;
  public
    { Public declarations }
    constructor MyCreate(AOwner: TComponent; AQuery : TADQuery; AIdMiejscowoscWGminie, AIdNrUlicy : integer; ACzyUlica : boolean);
  end;

//var
//  fDodajLokal: TfDodajLokal;

implementation

uses
  uGlobal, uFormBase;
{$R *.dfm}

procedure TfDodajLokal.actDodajExecute(Sender: TObject);
var
  makeCommit : boolean;
begin
  inherited;

  makeCommit := false;
  Self.ModalResult := mrCancel;
  FQuery.Transaction.StartTransaction;
  try
    if FCzyUlica then // dodajemy nr do ulicy
    begin
      if JvEdtNrDomu.Text = '' then
      begin
        MsgBox(MSG_TXT_00019, MSG_CAPTION_INFO, MyDtInformation, MyMbOK);
        Exit;
      end;

     try
        FQuery.Active := false;
        FQuery.SQL.Clear;
        FQuery.SQL.Add('select * ');
        FQuery.SQL.Add('from UliceKRS ');
        FQuery.SQL.Add('where idMiejscowosciWGminach = ' + IntToStr(FIdMiejscowoscWGminie));
        FQuery.SQL.Add('  and idNazwyUlicy = ' + IntToStr(FIdNrUlicy));
        FQuery.SQL.Add('  and chNumer = ''' + AnsiUpperCase(JvEdtNrDomu.Text) + '''');
        if JvEdtNrLokalu.Text = '' then
          FQuery.SQL.Add('  and chNumerLokalu is null')
        else
          FQuery.SQL.Add('  and chNumerLokalu = ''' + AnsiUpperCase(JvEdtNrLokalu.Text) + '''');
        FQuery.Active := true;

        if not FQuery.Eof then
        begin
         MsgBox(MSG_TXT_00020, MSG_CAPTION_INFO, MyDtInformation, MyMbOK);
         Exit;
        end;

        //dodanie wpisu do ulicekrs z numerem
        FQuery.Active := false;
        FQuery.SQL.Clear;
        FQuery.SQL.Add('insert into UliceKRS (idMiejscowosciWGminach, idNazwyUlicy, chNumer, chNumerLokalu) ');
        FQuery.SQL.Add('values (' + IntToStr(FIdMiejscowoscWGminie));
        FQuery.SQL.Add(', ' + IntToStr(FIdNrUlicy));
        FQuery.SQL.Add(', ''' + AnsiUpperCase(JvEdtNrDomu.Text) + '''');
        if JvEdtNrLokalu.Text = '' then
          FQuery.SQL.Add(', null)')
        else
          FQuery.SQL.Add(', ''' + AnsiUpperCase(JvEdtNrLokalu.Text) + ''')');

        FQuery.ExecSQL;
        makeCommit := true;
        Self.ModalResult := mrOK;
      except
         MsgBox(MSG_ERROR_00013, MSG_CAPTION_ERROR, MyDtError, MyMbOK);
        raise;
      end;

    end else  // w przeciwnym razie dodajem nr do miejscowosci
    begin  // no.1

      if JvEdtNrDomu.Text = '' then
         Exit;

      //sprawdzenie czy taki lokal nie istnieje
      FQuery.Active := false;
      FQuery.SQL.Clear;
      FQuery.SQL.Add('select * from NumerWMiescie');
      FQuery.SQL.Add('where idMiejscowosciWGminach = ' + IntToStr(FIdMiejscowoscWGminie));
      FQuery.SQL.Add('  and chNumer = ''' + AnsiUpperCase(JvEdtNrDomu.Text) + '''');
      if JvEdtNrLokalu.Text = '' then
         FQuery.SQL.Add('and chNumerLokalu is null')
      else
         FQuery.SQL.Add('and chNumerLokalu = ''' + AnsiUpperCase(JvEdtNrLokalu.Text) + '''');
      FQuery.Active := true;

      if not FQuery.Eof then
      begin
         MsgBox(MSG_TXT_00020, MSG_CAPTION_INFO, MyDtInformation, MyMbOK);
         Exit;
      end;

      //dodanie wpisu do numerwmiescie z numerem i lokalem
     FQuery.Active := false;
     FQuery.SQL.Clear;
     FQuery.SQL.Add('insert into NumerWMiescie (idMiejscowosciWGminach, chNumer, chNumerLokalu) ');
     FQuery.SQL.Add('values (' + IntToStr(FIdMiejscowoscWGminie));
     FQuery.SQL.Add(', ''' + AnsiUpperCase(JvEdtNrDomu.Text) + '''');
      if JvEdtNrLokalu.Text = '' then
        FQuery.SQL.Add(', null)')
      else
        FQuery.SQL.Add(', ''' + AnsiUpperCase(JvEdtNrLokalu.Text) + ''')');

      FQuery.ExecSQL;
      makeCommit := true;
    end;  //  -> no.1
  finally
    if makeCommit then
      FQuery.Transaction.Commit
    else
      if FQuery.Transaction.Active then
        FQuery.Transaction.Rollback;
    Self.Close;
  end;
  Self.Close;

end;

procedure TfDodajLokal.FormShow(Sender: TObject);
begin
  inherited;
  tbtnMax.Visible := false;
  tbtnMin.Visible := false;
  tbtnNormal.Visible := false;

   JvEdtNrDomu.Text := '';
   JvEdtNrLokalu.Text := '';
   JvEdtNrDomu.SetFocus;
end;

procedure TfDodajLokal.jvPanelButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//  inherited;

end;

procedure TfDodajLokal.JvPanelRightMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//  inherited;

end;

constructor TfDodajLokal.MyCreate(AOwner: TComponent; AQuery : TADQuery; AIdMiejscowoscWGminie, AIdNrUlicy : integer; ACzyUlica : boolean);
begin
  inherited Create(AOwner);
  FQuery := AQuery;
  FIdMiejscowoscWGminie := AIdMiejscowoscWGminie;
  FIdNrUlicy := AIdNrUlicy;
  FCzyUlica := ACzyUlica;
end;

end.
